<?php

/*
 *
 *
 * This software has been made FREELY available by author for interest of the developers. 
 *      I hope this will help you in coding faster and robust php application
 *            You can modify and use it as you it suits you.
 *              Your comments, suggestions and corrections 
 *                          will be highly 
 *                           APPRECIATED. 
 *                                      Thanks, 
 *                                      Author
 * @author :   Roshan Budhathoki (contact@roshanbudhathoki.com);
 * @URL    :   <http://www.roshanbudhathoki.com>
 *
 */

class View {
	private $aExported;
	private $aCurrent;
	private static $instance;
	
	public static function newInstance() {
		if (! self::$instance instanceof self) {
			self::$instance = new self ();
		}
		return self::$instance;
	}
	
	function __construct() {
		$this->aExported = array ();
	}
	
	//to export variables at the business layer
	function _exportVariableToView($key, $value) {
		$this->aExported [$key] = $value;
	}
	
	//to get the exported variables for the view
	function _get($key) {
		if ($this->_exists ( $key )) {
			return ($this->aExported [$key]);
		} else {
			return '';
		}
	}
	
	//only for debug
	function _view($key = null) {
		if ($key) {
			print_r ( $this->aExported [$key] );
		} else {
			print_r ( $this->aExported );
		}
	}
	
	function _next($key) {
		if (is_array ( $this->aExported [$key] )) {
			$this->aCurrent [$key] = current ( $this->aExported [$key] );
			if ($this->aCurrent [$key]) {
				next ( $this->aExported [$key] );
				return true;
			}
		}
		return false;
	}
	
	function _current($key) {
		if (isset ( $this->aCurrent [$key] ) && is_array ( $this->aCurrent [$key] )) {
			return $this->aCurrent [$key];
		} elseif (is_array ( $this->aExported [$key] )) {
			$this->aCurrent [$key] = current ( $this->aExported [$key] );
			return $this->aCurrent [$key];
		}
		return '';
	}
	
	function _reset($key) {
		if (is_array ( $this->aExported [$key] )) {
			return reset ( $this->aExported [$key] );
		}
		return array ();
	}
	
	function _exists($key) {
		return (isset ( $this->aExported [$key] ) ? true : false);
	}
	
	function _count($key) {
		if (is_array ( $this->aExported [$key] )) {
			return count ( $this->aExported [$key] );
		}
		return - 1;
	}
	
	function _erase($key) {
		unset ( $this->aExported [$key] );
		unset ( $this->aCurrent [$key] );
	}
}